//
//  RAC_bindSignal.m
//  ReactiveCocoa
//
//  Created by apple on 2017/9/11.
//  Copyright © 2017年 apple. All rights reserved.
//

#import "RAC_bindSignal.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "RacReturnSignal.h"
@interface RAC_bindSignal ()

@end

@implementation RAC_bindSignal

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    
    self.view.backgroundColor = [UIColor whiteColor];
    
#pragma 绑定信号 - 可以对信号进行处理后 再订阅 - 这个做什么用呢？ - 处理好数据发送出去/发送数据出去再处理？ - 前者方便一点吧？
    
    // 1.创建信号
    RACSubject *subject = [RACSubject subject];
    
    // 2.绑定信号
    RACSignal *bindSignal = [subject bind:^RACSignalBindBlock _Nonnull{
       
        // 返回一个信号
        return ^RACSignal *(id value, BOOL *stop){
        
            // value是源信号（subject）发送的数据 - 在这个block里对数据进行操作
            
            
            // 将value包装成一个信号返回
            return [RACReturnSignal return:value];
        };
        
    }];
    
    // 3.订阅信号
    [bindSignal subscribeNext:^(id  _Nullable x) {
       
        //接收到的是处理好的value 数据
        NSLog(@"x = %@",x);
    }];
    
    
    // 4.源信号发送信号
    [subject sendNext:@1];
}

@end
